|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
public interface GPCLRegistryEntry
Defines methods that manage the GlobalPlatform registry extension on contactless interface for an applet.
All OPEN-owned objects implementing the GPRegistryEntry interface
shall also implement and may be casted to the GPCLRegistryEntry
interface.
When an Application is deleted, then the GPCLRegistryEntry object
corresponding to this Application shall be disabled and all its methods,
except the GPRegistryEntry.getAID() method, shall throw a SystemException with reason code
SystemException.ILLEGAL_USE. The OPEN shall ensure that this
GPCLRegistryEntry object can never be re-enabled, even if an
Application with the same AID as the Application previously bound to this
GPCLRegistryEntry object is installed. The OPEN shall not return
this GPCLRegistryEntry object as the result of any of the methods
this API. An application holding a reference to a disabled GPCLRegistryEntry object should release it, as it has become useless and
will only throw exceptions.
Note: Developers shall pay attention to the CRELApplication,
CLApplet and CRSApplication interfaces being notified upon usage of
GPCLRegistryEntry services. Therefore, it is strongly recommended
*not* to call the services provided by this interface when a Java Card
transaction is under progress.
GPCLSystem.getGPCLRegistryEntry(AID),
GPCLSystem.getNextGPCLRegistryEntry(GPCLRegistryEntry, short)| Field Summary | |
|---|---|
static byte |
CONTINUOUS_PROCESS_DISABLED
Constant indicating that the application supports Interleaved Processing. |
static byte |
CONTINUOUS_PROCESS_ENABLED
Constant indicating that the application requires Continuous Processing. |
static byte |
DISPLAY_REQUIREMENT_NO
Constant indicating that the application does not require the availability of display capabilities (i.e. can work when the display is off or not available). |
static byte |
DISPLAY_REQUIREMENT_YES
Constant indicating that the application requires the availability of display capabilities (i.e. cannot work when the display is off or not available). |
static byte |
IMPLICIT_SELECTION_TYPE_A
Constant indicating that the application supports contactless protocol Type A for implicit selection |
static byte |
IMPLICIT_SELECTION_TYPE_B
Constant indicating that the application supports contactless protocol Type B for implicit selection |
static byte |
IMPLICIT_SELECTION_TYPE_F
Constant indicating that the application supports contactless protocol Type F for implicit selection |
static short |
INFO_CONTINUOUS_PROCESS
The requested information is the Continuous Processing Indicator. |
static short |
INFO_COUNTER_UPDATE
The requested information is the Update Counter (READ ONLY). |
static short |
INFO_DISCRETIONARY_DATA
The requested information is discretionary data. |
static short |
INFO_DISPLAY_MESSAGE
The requested information is a diplay message (i.e. content of Display Message - Tag '5F45'). |
static short |
INFO_DISPLAY_REQUIREMENT
The requested information is the Display Required Indicator. |
static short |
INFO_FAMILY_IDENTIFIER
The requested information is an Application Family Identifier. |
static short |
INFO_GROUP_HEAD_APPLICATION
The requested information is the AID of the Group Head Application if this entry correspond to a Member Application. |
static short |
INFO_IMPLICIT_SELECTION_PROTOCOLS
The requested information is a list of protocols (Type A, Type B and/or Type F) used for implicit selection. |
static short |
INFO_IMPLICIT_SELECTION_RECOGNITION_ALGORITHM
The requested information is a Recognition Algorithm to be used for Implicit Selection (i.e. content of INSTALL system parameter Tag '83'). |
static short |
INFO_LOGO
The requested information is a logo (i.e. content of Application Image Template - Tag '6D'). |
static short |
INFO_POLICY_RESTRICTED_APPLICATIONS
The requested information is a policy restricting the joint usage of some applications. |
static short |
INFO_PROTOCOL_DATA_TYPE_A
The requested information is the PROTOCOL_DATA_TYPE_A (i.e. content of INSTALL system parameter Tag '86'). |
static short |
INFO_PROTOCOL_DATA_TYPE_B
The requested information is the PROTOCOL_DATA_TYPE_B (i.e. content of INSTALL system parameter Tag '87'). |
static short |
INFO_PROTOCOL_DATA_TYPE_F
The requested information is the PROTOCOL_DATA_TYPE_F (i.e. content of INSTALL system parameter Tag '88'). |
static short |
INFO_PROTOCOL_TYPE_F_MODE_FLAG
The requested information is the transient Mode Flag associated with a specific System Code as part of Type F Protocol anti-collision process. |
static short |
INFO_SELECTION_PRIORITY
The requested information is the Selection Priority (READ ONLY) encoded as a single unsigned byte. |
static short |
INFO_URI
The requested information is an URI (i.e. content of Uniform Ressource Identifier Tag '5F50'). |
static byte |
PRIVILEGE_CONTACTLESS_ACTIVATION
Contactless Activation privilege (18). |
static byte |
PRIVILEGE_CONTACTLESS_SELF_ACTIVATION
Self Activation privilege (19). |
static byte |
PROTOCOL_TYPE_F_MODE_FLAG_FALSE
Constant indicating that a Type F Mode Flag is set to false. |
static byte |
PROTOCOL_TYPE_F_MODE_FLAG_TRUE
Constant indicating that a Type F Mode Flag is set to true. |
static byte |
STATE_CL_ACTIVATED
Constant used to activate an applet on the contactless interface. |
static byte |
STATE_CL_DEACTIVATED
Constant used to deactivate an applet on the contactless interface. |
static byte |
STATE_CL_NON_ACTIVATABLE
Constant used to change the state of an applet to NON ACTIVATABLE over the contactless interface. |
| Method Summary | |
|---|---|
void |
addToCRELApplicationList(byte[] baAID,
short offsetAID,
short lengthAID)
Adds an AID to the list of CREL Applications referenced by this entry. |
void |
addToGroupAuthorizationList(byte[] baAID,
short offsetAID,
short lengthAID)
Adds an AID to the Group Authorization List. |
byte |
getCLState()
Retrieves the contactless activation state of the Application. |
short |
getInfo(byte[] buffer,
short offset,
short info)
Retrieves the contents of an Application Information stored by this entry. |
GPCLRegistryEntry |
getNextConflictingApplication(GPCLRegistryEntry oEntry)
Retrieves the list of currently activated Contactless Applications that would conflict if the Contactless Application represented by this entry was activated. |
GPCLRegistryEntry |
getNextCRELApplication(GPCLRegistryEntry oEntry)
Retrieves the list of CREL Applications referenced by this entry. |
GPCLRegistryEntry |
getNextGroupMember(GPCLRegistryEntry oEntry)
Retrieves the list of member Applications belonging to the Application Group represented by this entry (Head Application). |
GPCLRegistryEntry |
getNextReferencingApplication(GPCLRegistryEntry oEntry)
Retrieves the list of Applications that reference this entry as one of their CREL Applications. |
boolean |
isGroupHead()
Whether this entry represents a Group Head. |
boolean |
isGroupMember()
Whether this entry represents a Group Member. |
void |
joinGroup(javacard.framework.AID oHead)
Sets up this entry as a member of the Application Group with specified Head Application. |
void |
removeFromCRELApplicationList(byte[] baAID,
short offsetAID,
short lengthAID)
Removes an AID from the list of CREL Applications referenced by this entry. |
void |
removeFromGroupAuthorizationList(byte[] baAID,
short offsetAID,
short lengthAID)
Removes an AID from the Group Authorization List. |
byte |
setCLState(byte state)
Changes the contactless activation state of the Application represented by this entry. |
short |
setInfo(byte[] buffer,
short offset,
short length,
short info)
Updates the contents of an Application Information stored by this entry. |
void |
setPartialSelectionOrder(boolean highestLowest)
Sets the permanent order of the GlobalPlatform Registry used by application selection by AID matching. |
| Methods inherited from interface org.globalplatform.GPRegistryEntry |
|---|
deregisterService, getAID, getPrivileges, getState, isAssociated, isPrivileged, registerService, setState |
| Field Detail |
|---|
static final byte PRIVILEGE_CONTACTLESS_ACTIVATION
static final byte PRIVILEGE_CONTACTLESS_SELF_ACTIVATION
static final byte STATE_CL_NON_ACTIVATABLE
static final byte STATE_CL_ACTIVATED
static final byte STATE_CL_DEACTIVATED
static final short INFO_URI
static final short INFO_DISCRETIONARY_DATA
static final short INFO_LOGO
static final short INFO_PROTOCOL_DATA_TYPE_A
static final short INFO_PROTOCOL_DATA_TYPE_B
static final short INFO_PROTOCOL_DATA_TYPE_F
static final short INFO_DISPLAY_MESSAGE
static final short INFO_FAMILY_IDENTIFIER
This information is encoded as follows:
static final short INFO_IMPLICIT_SELECTION_PROTOCOLS
This information is encoded as a sequence of bytes representing the value(s) of one or more of the following constants:
If the sequence is empty, the application can be implicity selected using any of these protocol types (see definition of TLV "Assigned Protocol for Implicit Selection").
static final byte IMPLICIT_SELECTION_TYPE_A
static final byte IMPLICIT_SELECTION_TYPE_B
static final byte IMPLICIT_SELECTION_TYPE_F
static final short INFO_CONTINUOUS_PROCESS
This information may have one of the following values:
static final byte CONTINUOUS_PROCESS_ENABLED
static final byte CONTINUOUS_PROCESS_DISABLED
static final short INFO_COUNTER_UPDATE
GPCLRegistryEntry is
updated. This counter is used by CRS/CREL applications to synchronize with
the current state of the GlobalPlatform registry.
static final short INFO_DISPLAY_REQUIREMENT
static final byte DISPLAY_REQUIREMENT_NO
static final byte DISPLAY_REQUIREMENT_YES
static final short INFO_POLICY_RESTRICTED_APPLICATIONS
This information is encoded as a sequence (possibly empty) of TLV structures, each one representing an AID (tag '4F').
static final short INFO_IMPLICIT_SELECTION_RECOGNITION_ALGORITHM
static final short INFO_SELECTION_PRIORITY
The Selection Priority is calculated based on the absolute position of the Contactless Application's entry in the GlobalPlatform Registry, and the Volatile Priority, if assigned.
static final short INFO_GROUP_HEAD_APPLICATION
isGroupMember(),
Constant Field Valuesstatic final short INFO_PROTOCOL_TYPE_F_MODE_FLAG
This data does not belong to the set of persistent Type F protocol parameters but is a transient protocol data that must be accessed by Type F Applets during a contactless transaction.
This information is encoded as the concatenation of a 2-byte System Code and a 1-byte Mode Flag. The Mode Flag may have one of the following values:
static final byte PROTOCOL_TYPE_F_MODE_FLAG_TRUE
true.
static final byte PROTOCOL_TYPE_F_MODE_FLAG_FALSE
false.
| Method Detail |
|---|
byte setCLState(byte state)
Only the Application represented by this entry may transition to or from
the NON ACTIVATABLE state. When this entry represents a
Group Member currently in the NON ACTIVATABLE state and
that Group Member requests transioning to the DEACTIVATED
state (i.e. only allowed transition request at this time), then it shall be
automatically transitioned to the same activation state as its associated
Head Application (except if the Head Application is in the STATE_CL_NON_ACTIVATABLE state).
The Application represented by this entry, or the Application with the
PRIVILEGE_CONTACTLESS_ACTIVATION privilege, or CREL Applications
registered in the CREL list of the Application represented by this entry,
may transition this entry to the DEACTIVATED state.
When a request is made to transition this entry to the STATE_CL_ACTIVATED state, then
PRIVILEGE_CONTACTLESS_ACTIVATION privilege, or PRIVILEGE_CONTACTLESS_SELF_ACTIVATION
privilege,CRSApplication.processCLRequest(GPRegistryEntry, GPCLRegistryEntry,
short) with the requester parameter set to the caller of
this method, the target parameter set to this entry, and the
event parameter set to CLAppletEvent.EVENT_ACTIVATED
event. This method is expected to check whether the transition is
permitted before requesting the CRS Application to perform the modification.setCLState(byte) to change the activation state of the
Application. Otherwise, the activation state of the Application remains
unchanged.CRSApplication or
CRELApplication interface,
CRELApplication interface,
CLApplet interface.
state - requested activation state on contactless interface.
The possible states are:
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller does not
have enough privileges, or the presence of the CRS Application is required
and the CRS Application cannot be located or is not in a selectable
state.ISO7816.SW_CONDITIONS_NOT_SATISFIED if the requested state is ACTIVATED and the Application corresponding to this entry either GPCLSystem.checkCommunicationInterfaceAccess(org.globalplatform.GPRegistryEntry, short)), or
ISO7816.SW_WRONG_DATA if the Application cannot be
activated on the contactless interface because of conflicting RF
parameters.ISO7816.SW_CONDITIONS_NOT_SATISFIED if the requested
activation state transition is not valid.ISO7816.SW_UNKNOWN if the call to the CRSApplication.processCLRequest(GPRegistryEntry, GPCLRegistryEntry, short)
method resulted in an exception being thrown.GPRegistryEntrybyte getCLState()
short getInfo(byte[] buffer,
short offset,
short info)
buffer - where requested information shall be written. For the coding of the data
see the documentation of the constants INFO_XX.offset - within buffer, where requested information shall be written.info - is any constant with name INFO_XX which is defined in this interface.
offset + length of data written in buffer)
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller PRIVILEGE_CONTACTLESS_ACTIVATION privilege and
GPRegistryEntry.PRIVILEGE_GLOBAL_REGISTRY privilege, andISO7816.SW_WRONG_DATA if the value of info is unknown.ISO7816.SW_RECORD_NOT_FOUND if the info is not present.java.lang.ArrayIndexOutOfBoundsException - if storing the Application Information bytes would cause
access outside array bounds or the offset is
negative.
java.lang.NullPointerException - if buffer is null
short setInfo(byte[] buffer,
short offset,
short length,
short info)
buffer - contains the updated information. For the coding of the data
see the documentation of the constants INFO_XX.offset - within buffer, where updated information can be foundlength - of the updated informationinfo - is any constant with name INFO_XX which is defined in this interface.
offset + length)
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller
ISO7816.SW_WRONG_DATA if the value is not correctly formatted.ISO7816.SW_WRONG_DATA if the value of info is unknown.ISO7816.SW_FUNC_NOT_SUPPORTED if the info is not supported by the platform (e.g. unsupported RF protocol data).ISO7816.SW_CONDITIONS_NOT_SATISFIED if the info indicates a READ ONLY information.java.lang.ArrayIndexOutOfBoundsException - if storing the Application Information bytes would cause
access outside array bounds or the offset is
negative.
java.lang.NullPointerException - if buffer is nullGPCLRegistryEntry getNextConflictingApplication(GPCLRegistryEntry oEntry)
NOTE: For Applications belonging to an Application Group, Contactless Protocol Parameters (used to perform conflict detection) are provided by the Head Application of that group, even if the Member Application was personalized with its own parameter values.
oEntry - GPCLRegistryEntry
oEntry is null, this method returns the first entry of the list.oEntry is not null and belongs to the list, oEntry.
oEntry is not null and points to the last entry of the list, this method returns null.oEntry is not null but does not belong to the list, this method returns null.javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED if the
caller does not have the PRIVILEGE_CONTACTLESS_ACTIVATION privilege.
java.lang.SecurityException - if oEntry is not a JCRE-owned instance of GPCLRegistryEntry.
javacard.framework.SystemException - with reason code SystemException.ILLEGAL_USE if the specified oEntry corresponds to an application that has been deleted.void joinGroup(javacard.framework.AID oHead)
oHead - Head Application's AID. The null value shall be
used to leave any Application Group to which this entry may
belong.
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED oHead parameter is not null and this entry is already associated to a Head Application, oroHead parameter is not null and cannot be found in the GlobalPlatform registry, oroHead parameter is not null and does not identify a Head Application, oroHead parameter.GPCLRegistryEntry getNextGroupMember(GPCLRegistryEntry oEntry)
oEntry - GPCLRegistryEntry
oEntry is null, this method returns the first entry of the list.oEntry is not null and belongs to the list, oEntry.
oEntry is not null and points to the last entry of the list, this method returns null.oEntry is not null but does not belong to the list, this method returns null.javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller
PRIVILEGE_CONTACTLESS_ACTIVATION privilege and
java.lang.SecurityException - if oEntry is not a JCRE-owned instance of GPCLRegistryEntry.
javacard.framework.SystemException - with reason code SystemException.ILLEGAL_USE if the specified oEntry corresponds to an application that has been deleted.
void addToGroupAuthorizationList(byte[] baAID,
short offsetAID,
short lengthAID)
baAID - byte array containing the AID valueoffsetAID - start offset of the AID valuelengthAID - length of the AID value
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED
void removeFromGroupAuthorizationList(byte[] baAID,
short offsetAID,
short lengthAID)
baAID - byte array containing the AID valueoffsetAID - start offset of the AID valuelengthAID - length of the AID value
javacard.framework.ISOException - with reason code ISO7816.SW_CONDITIONS_NOT_SATISFIEDvoid setPartialSelectionOrder(boolean highestLowest)
If this entry is a Head Application, all Group Members are moved together with the Head Application in the same order.
highestLowest - javacard.framework.ISOException - with reason codeISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller does not have the PRIVILEGE_CONTACTLESS_ACTIVATION privilege.GPCLRegistryEntry getNextCRELApplication(GPCLRegistryEntry oEntry)
oEntry - GPCLRegistryEntry
oEntry is null, this method returns the first entry of the list.oEntry is not null and belongs to the list, oEntry.
oEntry is not null and points to the last entry of the list, this method returns null.oEntry is not null but does not belong to the list, this method returns null.javacard.framework.ISOException - with reason codeISO7816.SW_CONDITIONS_NOT_SATISFIEDPRIVILEGE_CONTACTLESS_ACTIVATION privilege and
java.lang.SecurityException - if oEntry is not a JCRE-owned instance of GPCLRegistryEntry.
javacard.framework.SystemException - with reason code SystemException.ILLEGAL_USE if the specified oEntry corresponds to an application that has been deleted.
void addToCRELApplicationList(byte[] baAID,
short offsetAID,
short lengthAID)
baAID - byte array containing the AID valueoffsetAID - start offset of the AID valuelengthAID - length of the AID value
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller of this method
void removeFromCRELApplicationList(byte[] baAID,
short offsetAID,
short lengthAID)
baAID - byte array containing the AID valueoffsetAID - start offset of the AID valuelengthAID - length of the AID value
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller of this method
GPCLRegistryEntry getNextReferencingApplication(GPCLRegistryEntry oEntry)
oEntry - GPCLRegistryEntry
oEntry is null, this method returns the first entry of the list.
oEntry is not null and belongs to the list,
this method returns the next entry of the list following oEntry.
oEntry is not null and points to the last entry of the list, this method returns null.
oEntry is not null but does not belong to the list, this method returns null.
javacard.framework.ISOException - with reason code
ISO7816.SW_CONDITIONS_NOT_STATISFIED if the caller PRIVILEGE_CONTACTLESS_ACTIVATION privilege and
java.lang.SecurityException - if oEntry is not a JCRE-owned instance of GPCLRegistryEntry.
javacard.framework.SystemException - with reason code SystemException.ILLEGAL_USE if the specified oEntry corresponds to an application that have been deleted.boolean isGroupHead()
true if the Application represented by this entry is a Group Head,
false otherwise (either a Group Member or a standalone Application).
javacard.framework.ISOException - with reason code ISO7816.SW_CONDITIONS_NOT_SATISFIED if the caller PRIVILEGE_CONTACTLESS_ACTIVATION privilege and
GPRegistryEntry.PRIVILEGE_GLOBAL_REGISTRY privilege and
boolean isGroupMember()
true if the Application represented by this entry is a Group Member,
false otherwise (either a Group Head or a standalone Application).
javacard.framework.ISOException - with reason code ISO7816.SW_CONDITIONS_NOT_SATISFIED if the callerPRIVILEGE_CONTACTLESS_ACTIVATION privilege and
GPRegistryEntry.PRIVILEGE_GLOBAL_REGISTRY privilege and
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||